Let's start with the main interface which is very easy to understand.
Toolbar buttons
- Switch on/off your FTP Server
- Enable Wordwrap for screen log
- Clear screen log
- Close the FTP Server: no more connections are accepted
- Enable logging to file
- Enable logging to screen
- Exit from FTP (also shutdown the FTP)
- Server Statistics for user/transfer/connection
- Information on connected user(s), transfer rate/idle time/upload/download
- Make the FTP Server console stay always on top
- Display/hide connected users list on console's first right columnn
- Display/hide banned/forbidden users on console's second right column
- Setup FTP Server
- Events messages/audio
- Setup log: what to log on screen/file
- User account management
- Group management
- Free files: free files to download regardless what ratio/credit is set; wildcards accepted.
- Multi homed IP management (mainly for windows NT)
- Display About boxAs you can see, you can almost completely setup the BPFTP Server by this toolbar.
Menu/Popupmenu buttons
- Refresh
- Display grid in main window
- Spy user, show information on user
- Pause list
- Kick the selected user (+ ban query)
- Copy to clipboardOnscreen log
This is the big area on the screenshot where all server events are monitored:
- Client commands: green
- Server answers: blue
- Server Comments: black
You can select what is logged on the server console/in a log file under logging.
Connected users list & refused IPs on the server
The two colums on the right list users who are currently connected to your server. As well you get an overview of who is 'banned / not welcome' to your service or who is allowed to log in exclusively. Both can be hidden using the and buttons. We will go into detail on the other options later.
Main Menu
Here you can find most of the toolbar buttons.
Tray Icon
When you start the server, a tray icon appears near the system clock. It allows you to:
- Start/stop the server
- Show/hide the server window (reduce to tray icon)
- Exit (shut down) the server
I think this is enough for a short review. Let's take a look at the server setup!Main Setup
Well, first you need to setup the ftp port (21 is the default; you may wish to use another in case you're behind a firewall or something) and the maximum number of users that can log in simultaneously (0 is unlimited access).
Other settings:
General
- Server Name (registered users only): allows you to specify the name of your server that users see when they log in.
- Launch with Windows: under Windows 95/98 you can start the server without any user being logged on to the computer, (NT needs system services configuration which is not implemented yet, however there's a workaround).
- Activate Ftp server on Startup: launch the server as soon as it is loaded.
- Put Into Tray On Startup: starts minimized with an icon in the tray.
- Allow multiple instances: you can start the server many times but be sure to take care of the configuration files.
- Show Loading status at startup: displays the status progress bar.
- Scan drives at Startup: displays free space status of your system's drives on the onscreen log.
- Confirm Exit: ask for confirmation on exit.
Options
- Protect FTP Server Directory: the server won't show or give access to anything relative to the directory it resides in (generally a good idea to have this checked!!).
- Encrypt Account Passwords: passwords will be encrypted after they were entered in the password edit box. This is a one-way encryption so if you forgot a password you cannot get the plain-text password back!
Note: you should once and for all decide which method to use before starting to set up a large number of accounts since you can't change methods in between i.e. you cannot select the method to use on an account basis! For example, if you setup 10 accounts without encryption and do a new one with encryption the server won't be able to recognize the old passwords since he tries to verify their encrypted version; since they are all saved in plain-text, the server thinks they are incorrect even if the correct ones were entered!
- Login Check, Password Check is/are Case Sensitive: with these settings you can choose wether 'DEMO', 'DeMo', 'dEMO' are the same words for the server concerning Login and Password (only if not encrypted).
- Delete partially uploaded files: turn it on if you do not want users to be able to resume uploads, or if you don't want partially uploaded archives on your server. If checked these files will be deleted when the ABORT command is sent (clients do not always abort transfers by the ABORT command so this feature is not 100% successful). Any tries to resume uploads will fail.
- Use all lower case for files/Dirs: any file lists generated by the server are composed of lowercase characters. This is useful for Netscape users as Netscape sorts files by case (A > B > .. > a > b > ..).
- Disable log to screen when minimized: if you minimize your application, the server will stop logging to screen (less CPU usage).
- Show Relative Path: all users will see relative paths.
- Show Received Messages: user can send messages using 'SITE MSG <message to send>'; received messages flash the message list to notify you.
- Show Client not logged in: displays users not logged in (no user/pass provided yet) in the user/server activity list.
- Limit User/Pass to XX then Kick/Kick + Ban: if User/Pass exceeds the number allowed then you can kick or kick + ban user.
- Refuse connections with same IP: users can log in only once per IP Address, preventing 'hammering' of your server.
- Block Banned IP (instead of notifying client): this results in not notifying the client that his IP is banned; the client is blocked when he tries to connect.
- Resolve IP to Hostname: this option resolves IPs to hostname, for example '195.136.125.123' could be resolved to 'xxx.club-internet.fr'. You should consider to enable it only if you ban hostnames as it is a slow function that can cause a severe cpu load on your computer. Furthermore some IPs do not have hostnames associated, so the server will timeout after a certain period if it does not find a hostname.
Advanced
- Receive buffer: you can specify the amount of data sent at the same time, default is 4096 bytes.
- Server Allows ...: if you do not want users to upload or download (strange isn't it ;)) then select the corresponding mode.
- Server Priority ...: allows you to select server priority (Real Time is not recommended).
- Block Server-to-Server transfer (FXP): disables the use of Port commands not referring to client IPs, disable Bounce attack.
- Anti Hammering: this feature is useful to prevent people/clients from hammering your server, i.e. people who coulnd't log in (e.g. because the max. user limit was reached) but keep trying to repeatedly which can prevent the server from serving other connections properly. You can 'ban' these lamers for a speciefied period of time. For example, if a user tries to connect more than 10 times in 30 seconds then he will not be able to connect for 5 minutes because his IP is blocked (the server does not answer); after that time he will be able to retry to connect.
Directory Cache
This feature makes the server keep the directory list in memory for a specified amount of time. This prevents disk access for listing directories but needs memory. The list shows how the server caches the directory list and the hits achieved to the cache.
Default settings: 20 directories, 5 minutes.
Stat Generator
Did you ever wish to keep a top hitlist of your server without having to process the log files by hand?
Well, this feature is for you: it scans the file 'transfer.log' which is written after all clients disconnected and produces a 'result.top' file (which is an ini-file) containing the 'top uploaders/downloaders' on your site.For advanced users, here is the 'Log_Transfer.log' structure:
21/04/99 11:55:26#Anonymous#00:02:50#41964#8993#50957#3#2#297,994#3#2Date Connection # User Account Name#Time connected#Bytes Downloaded#Bytes Uploaded#(Bytes Uploaded + Bytes Downloaded)#Files Downloaded#Files Uploaded#(Bytes Uploaded + Bytes Downloaded) / Time Online = Session Speed#Time spent downloading in seconds#Time spent uploading in seconds
(for more info contact us)
Processed "Result.top" has this structure:
[General] Last Updated=20/04/99 16:47:07 Day Bytes Uploaded=6352591 Day Bytes Downloaded=5665139 Week Bytes Uploaded=6352591 Week Bytes Downloaded=5665139 Month Bytes Uploaded=6352591 Month Bytes Downloaded=5665139 All Time Bytes Uploaded=6352591 All Time Bytes Downloaded=5665139 [This Day-Uploader-N░1] NAME=Anon BUP=5570779 BDOWN=4883327 DLKBPS=529,875 ULKBPS=320,013 [This Week-Uploader-N░1] ... [This Month-Uploader-N░1] ... [All Time-Uploader-N░1] ... [This Day-Downloader-N░1] NAME=Anon BUP=5570779 BDOWN=4883327 DLKBPS=529,875 ULKBPS=320,013 [This Week-Downloader-N░1] ... [This Month-Downloader-N░1] ... [All Time-Downloader-N░1] ...After that, the server will process files named: "TOP-DAY.MDL","TOP-WEEK.MDL","TOP-MONTH.MDL","TOP-ALL.MDL" (these files must be placed in the server directory), processed files will be named "TOP-DAY.TOP, ..."In these files you have to specify tags to replace by Name, Bytes uploaded...
Tags Available:
//General %DATE: Current DateSo a "TOP-DAY.MDL" file could be:
%TIME: Current Time
YYYY = DAY/WEEK/MONTH/ALL %YYYYTOTALBUL : total bytes uploaded during YYYY %YYYYTOTALKBUL: total Kbytes uploaded during YYYY %YYYYTOTALMBUL: total Mbytes uploaded during YYYY %YYYYTOTALBDL : total bytes downloaded during YYYY %YYYYTOTALKBDL: total Kbytes downloaded during YYYY %YYYYTOTALMBDL: total Mbytes downloaded during YYYY // Top Upload %TOPULNAMEXX : user account name ranked XX in upload (1 for first, 2 for second ... 25 for last) %TOPULMBULXX : MB uploaded by user ranked XX in upload %TOPULMBDLXX : MB downloaded by user ranked XX in upload %TOPULKBPSULXX: average upload transfer rate in KB/s achieved by user ranked XX in upload %TOPULKBPSDLXX: average download transfer rate in KB/s achieved by user ranked XX in upload // Top Download %TOPDLNAMEXX : user account name ranked XX in download (1 for first, 2 for second ... 25 for last) %TOPDLMBULXX : MB uploaded by user ranked XX in download %TOPDLMBDLXX : MB downloaded by user ranked XX in download %TOPDLKBPSULXX: average upload transfer rate in KB/s achieved by user ranked XX in download %TOPDLKBPSDLXX: average download transfer rate in KB/s achieved by user ranked XX in downloadDate: |%DATE| . Daytop Stats! . Time: |%TIME| ----<:TOP 5 UPLOADERS:>----------------------------------------- 1. |%TOPULNAME1| | |%TOPULMBUL1| MB | |%TOPULKBPSUL1| KB/s 2. |%TOPULNAME2| | |%TOPULMBUL2| MB | |%TOPULKBPSUL2| KB/s 3. |%TOPULNAME3| | |%TOPULMBUL3| MB | |%TOPULKBPSUL3| KB/s 4. |%TOPULNAME4| | |%TOPULMBUL4| MB | |%TOPULKBPSUL4| KB/s 5. |%TOPULNAME5| | |%TOPULMBUL5| MB | |%TOPULKBPSUL5| KB/s ----<:TOP 5 DOWNLOADERS:>--------------------------------- 1. |%TOPDLNAME1| | |%TOPDLMBDL1| MB | |%TOPDLKBPSDL1| KB/s 2. |%TOPDLNAME2| | |%TOPDLMBDL2| MB | |%TOPDLKBPSDL2| KB/s 3. |%TOPDLNAME3| | |%TOPDLMBDL3| MB | |%TOPDLKBPSDL3| KB/s 4. |%TOPDLNAME4| | |%TOPDLMBDL4| MB | |%TOPDLKBPSDL4| KB/s 5. |%TOPDLNAME5| | |%TOPDLMBDL5| MB | |%TOPDLKBPSDL5| KB/s Total Mbytes Uploaded this day : %DAYTOTALMBUL Mbytes Total Mbytes Downloaded this day: %DAYTOTALMBDL MbytesWith "Log_Transfer.log" you can even write your own stat analyzer.
With "Result.top" you easily get to know the top ranked users.Another useful log is "Log_Xferfiles.log" which keeps a log of all files transfered by all users (if they have logged in successfully).
This file has the following structure:[<User Account Name> - Time of connection - Time of disconnection] ULXX=<file XX uploaded>| <Transfer Stat = "(00:00:00 - 0,000 KBps)"> DLXX=<file XX downloaded>| <Transfer Stat = "(00:00:00 - 0,000 KBps)">File transfers are logged including paths (c:\server\uploaded\file.exe) so that you can easily see who uploaded what.Stat Interface
If you want your stats to be refreshed at any given time, simply select the interval between two refreshes. You can also specifiy the accounts to be included/excluded from the stats file. By default all accounts are included but if you don't want to monitor some account (e.g. 'anonymous') simply uncheck it in the account list and stats on this one won't be computed.
Scheduler
The Scheduler allows you to:
- go online/offline/offline + exit/close/open/reboot/logoff/shutdown
- schedule at which Date + Time actions will take place
Dynamic IP
Dynamic IP is used to allow users who have dynamic IPs (IPs changing every time they dial in to the Internet) to be processed by the server even if the changes occur while the server is running. Your server does not need to be restarted, it will detect and use the new IP(s)!
Multi IP Settings
If you want to reserve IPs for multi domains usage, you need to enter those IPs you wish to use in the list. IPs can be masked (192.168.*); the same rules of the IP Access List apply.
This list is also useful for dynamic IPs, as you can have dynamic IPs being used by the server. When a new IP matching the list is detected then it will be used by the server. Furthermore you can tell the server to only use IPs matching the masks list, this way you can run another instance of the server on another IP.
This way the service will only be available for users who want to connect to the server on the IP 192.168.0.1. It allows you to configure an anonymous user for each ftp server:
Anon_192.168.0.1 on IP 192.168.0.1 with login: anonymous
Anon_192.168.0.2 on IP 192.168.0.2 with login: anonymous
...Users can have the same login/password on different 'virtual' servers.
Passive mode
Passive mode IP : when you run the server bahind proxy, passive mode reports current local ip (192.168.xxx.yyy for example). To make BPFTP reports correct ip, enter it in the ip box.
- Fixed IP : you are assigned a fixed ip by your ISP, enter it in the box.
- Dynamic IP : you are assigned a dynamic ip and are using a service like dyndns.org (or other) to keep your domain name pointing to your ip, enter the hostname in the edit box.
Passive port range : this is the range of ports that BPFTP Server will use with passive mode, (it is to simplify use of forwarding rule in router for example).
Visual
You can customize your server's tray icon by using your own, simply specifiy any 16*16 bmp image.
- Hottrack effect for list view (user list, server activity): by pointing your mouse on the list, the item will be selected automatically, you do not have to click.
- Switch Time Left/Progression in Server Activity: you will see the time left, alternatively with file progression under the Server Activity window.
- Delete file to recycle bin: file will be sent to recycle bin and can be recovered if needed
Logging
Setup
With this setup you can specify the way things are logged:
- Path to log file
- Type of Log File: Single/daily/weekly/monthly/yearly
(examples: 'FTP-18-apr.-1999.log' = a daily log file / 'FTP.LOG' = a log path).
- Max Lines on log screen
- Apply to Both/Apply to Screen Log/Apply to Log file: choose where to apply the following rules.
- Log All IP: All IPs Are logged.
- Log only these IP: only IPs listed below will be logged.
- Do not log these IP: only IPs listed below won't be logged.
- IP List: enter the IPs here.
Advanced
- Standard Log Syntax: use normal log syntax (maybe faster in some cases)
- Custom syntax: lets you define the way BPFTP will log events.
Tags for log syntax:
- %NAME: Account Name
- %LOGIN: Login for account
- %DATE, %TIME: Events date, time.
- %ID: User Unique Identifier
- %IP, %HOST: User IP, HostName (if 'resolve ip' is enabled)
- %LOG: event to log
- Color Settings: defines the color of the screen log font.
Screen/File
- Log Tried Connections
- Log users logged
- Log disconnection
- Log directories creations: MKD, XMKD ...
- Log Uploads: STOR, APPE
- Log Ended Uploads
- Log changes of directory: CWD, CDUP ...
- Log files deletion: DELE, RMD ...
- Show Answers from server
- Show Clients commands
- All/None
- Log Tried Connections
- Log users logged
- Log disconnection
- Log directories creations: MKD, XMKD ...
- Log Uploads: STOR, APPE
- Log Ended Uploads
- Log changes of directory: CWD, CDUP ...
- Log files deletion: DELE, RMD ...
- Show Answers from server
- Show Clients commands
- All/None
Free Files
Well this feature is only important to users who need ratios on their sites. Sometimes users that don't have credit on your server need to download an index file (a description of all the files on the server) or a file with info on how to get credit on your site in the first place. If they do not have credit then they can't download this index file unless it is denoted as a free file.
Wildcards are allowed! In my example above, the user can download any .TXT files in the \files\-directory as well as any .ZIP files in any of those directories he has access to. Files that match any of the masks will be free for download => they won't be counted for credit/ratio.
Possibilities are:
- \XXX\XXX.zip
- XXX.zip
- X:\XXX\XXX.XXX
XXX can be anything ?, *.Events Manager
Well this feature can reveal more useful to you than it seemed to be on first glance!
The most simple way to use it is to set sounds to user actions but execute action can go much further...
Command Events
- OnAccountDisabled: Message, Sound, Execute
- OnDirCreated: Message, Sound, Execute
- OnDirDeleted: Message, Sound, Execute
- OnEvery05mins: Sound, Execute
- OnEveryDay: Sound, Execute
- OnEveryHour: Sound, Execute
- OnExceedUserPass: Sound, Execute
- OnFileBanned: Message, Sound, Execute
- OnFileDeleted: Sound, Execute
- OnFileDownloaded: Sound, Execute
- OnFileRenamed: Sound, Execute
- OnFileUploaded: Sound, Execute
- OnFileUploadFailed: Sound, Execute
- OnIPChanged: Sound, Execute
- OnLogFileRotate: Sound, Execute
- OnQuotaExceeded: Message, Sound, Execute
- OnSameIPConnect: Message, Sound, Execute
- OnServerClosed: Message, Sound, Execute
- OnServerStarted: Sound, Execute
- OnServerStopped: Sound, Execute
- OnStatRefreshed: Sound, Execute
- OnTooManyUsers: Message, Sound, Execute
- OnTooManyUsersForAccount: Message, Sound, Execute
- OnUserAndPass: Message, Sound, Execute
- OnUserDisconnect: Sound, Execute
- OnUserDisconnect: Sound, Execute
- OnUserHammering: Message, Sound, Execute
- OnUserIsBanned: Message, Sound, Execute
- OnUserQuit: Message, Sound, Execute
- OnUserLoggedIn: Sound, Execute
- OnUserTimeOut: Message, Sound, Execute
- OnWelcomeUser: Message, Sound, Execute
(more to come soon)
The following events do already send a default messaged to the user: OnSameIPConnect, OnServerClosed, OnTooManyUsers, OnUserIsBanned, OnUserQuit, OnWelcomeUser. They are overridden if you define your own reply messages.
You can also specify how to launch applications: hidden (no interface), normal, maximized, minimized.
Event can also be restricted on filemask : '*.exe;c:\ftp\*.*|c:\path\application.bat %parameters' for file related events OnFileUploaded, OnFileDownloaded ...
Known Tags
%FILE: Complete path to file (including filename).
%FILE_8.3: Same as %FILE but with 8.3 path format.
%FILENAME: Only filename (archives.zip, archives.rar ...).
%FILENAME_8.3: Same as %FILENAME but with 8.3 path format.
%FILEEXT: Extension of the file in uppercase (.EXE, .RAR ...).
%FILENOEXT: Filename without extension.
%FILEPATH: path without filename (c:\temp\ ...).
%FILEPATH_8.3: Same as %FILEPATH but with 8.3 path format.
%FILESIZE: File Size in bytes.%DIRCREATED: Name of newly created directory (for OnDirCreated Event).
%DIRTARGET: Name of directory where new dir has been created.
%DIRTARGET_8.3: Same as %DIRTARGET but with 8.3 path format.
%DIR: Full path to new directory.
%DIR_8.3: Same as %DIR but with 8.3 path format.%DATE: Current date.
%TIME: Current time.%EVENT: returns fired event name.
%SERVERIP: Server IP separated by comma.%CLIENTNAME: User Account.
%CLIENTGROUP: Group Account.
%CLIENTIP: User IP.
%CLIENTLOGIN: Login used by client.
%CLIENTPASSWORD: Password used by client.
(tags from message files are also available but impersonal events will not use client specific tags).
For example: - OnFileUploaded:
Sometimes you may want to add files to uploaded archives (e.g. site info like 'this file passed «server name»', or description files like 'File_id.diz', etc.). Depending on the file type like zip, rar, or anything else you could setup a batch file:
IF "%1"==".RAR" GOTO RARFILE IF "%1"==".ZIP" GOTO ZIPFILE GOTO QUIT :RARFILE c:\rar\rar.exe a %2 c:\myad\ad.txt GOTO QUIT :ZIPFILE c:\zip\pkzip.exe -a %2 c:\myad\ad.txt GOTO QUIT :QUITIn the field 'Execute' just enter the path to your batch file:c:\myad\mybat.bat %FILEEXT %FILE
Now every time a file has been successfully uploaded, your batch file is started automatically which in turn scans the filenames for rar and zip extensions and adds your file 'ad.txt' those archives.